package jin.si.service.impl;

import jin.si.dao.LoginDao;
import jin.si.pojo.JsBeforeUser;
import jin.si.service.LoginService;
import jin.si.util.Md5Util;
import jin.si.util.RandomUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;

/**
 * @projectName: jinsi-java
 * @package: jin.si.service.impl
 * @className: LoginServiceImpl
 * @date: 2022/2/27 13:43:50
 * @author: LBF
 */
@Service
public class LoginServiceImpl implements LoginService {

    @Autowired(required = false)
    private LoginDao loginDao;

    /**
     * @Author WYH
     * @Description //TODO 手机号和密码登录
     * @Date 下午 1:37 2022/3/3
     * @Param phone，password
     * @return JsBeforeUser
     **/
    public JsBeforeUser getLogn(String phone){
        JsBeforeUser logn = loginDao.getLogn(phone);
        return logn;
    }
    
    /**
     * @Author WYH
     * @Description //TODO 快速注册用户
     * @Date 上午 9:15 2022/3/7
     * @Param jsBeforeUser
     * @return  true / false
     **/
    @Override
    public Boolean quicklyRegisterUsers(String phone) {
        JsBeforeUser jsBeforeUser = new JsBeforeUser();
        //生成账号
        String randomCharStr = RandomUtil.getRandomCharStr(15);
        jsBeforeUser.setAccount(randomCharStr);
        //手机号
        jsBeforeUser.setPhone(phone);
        //昵称
        jsBeforeUser.setNickname("思云用户");
        //学习时长，默认为0
        jsBeforeUser.setStudyDate(0);
        //用户状态，默认为2正常，2正常，3禁言，4注销
        jsBeforeUser.setStatus(2);
        //用户签名，默认生成的签名
        jsBeforeUser.setFreestyle("Hi，欢迎来到思云课堂");
        //消费金额，默认为0
        jsBeforeUser.setConsumption(0);
        //创建时间
        jsBeforeUser.setCreateTime(new Date());
        Boolean users = loginDao.quicklyRegisterUsers(jsBeforeUser);
        return users;
    }

    /**
     * @Author WYH
     * @Description //TODO 重置密码
     * @Date 下午 2:11 2022/3/7
     * @Param phone,password
     * @return true / false
     **/
    @Override
    public Boolean forgetPassword(String phone, String password) {
        Boolean forgetPassword = loginDao.forgetPassword(phone, password);
        return forgetPassword;
    }

    /**
     * @Author WYH
     * @Description //TODO 注册用户
     * @Date 下午 1:59 2022/3/8
     * @Param nickname，phone，password
     * @return true | false
     **/
    @Override
    public Boolean createUser(String nickname,String phone,String password) {
        JsBeforeUser jsBeforeUser = new JsBeforeUser();
        //生成账号
        String account = RandomUtil.getRandomCharStr(15);
        jsBeforeUser.setAccount(account);
        //加密密码
        password = Md5Util.MD5andSAL(password);
        jsBeforeUser.setPassword(password);
        //手机号
        jsBeforeUser.setPhone(phone);
        //昵称
        jsBeforeUser.setNickname(nickname);
        //学习时长，默认为0
        jsBeforeUser.setStudyDate(0);
        //用户状态，默认为2正常，2正常，3禁言，4注销
        jsBeforeUser.setStatus(2);
        //用户签名，默认生成的签名
        jsBeforeUser.setFreestyle("Hi，欢迎来到思云课堂");
        //消费金额，默认为0
        jsBeforeUser.setConsumption(0);
        //创建时间
        jsBeforeUser.setCreateTime(new Date());
        Boolean user = loginDao.createUser(jsBeforeUser);
        return user;
    }

    /**
     * @Author WYH
     * @Description //TODO 查询微信唯一标识是否存在
     * @Date 下午 3:20 2022/3/10
     * @Param wxUnionId
     * @return Integer
     **/
    public Integer getWx(String wxUnionId){
        return loginDao.getWx(wxUnionId);
    }

    /**
     * @Author WYH
     * @Description //TODO 添加微信登录用户
     * @Date 下午 4:55 2022/3/10
     * @Param jsBeforeUser
     * @return  true | false
     **/
    @Override
    public Boolean addWxUser(JsBeforeUser jsBeforeUser) {
        //生成账号
        String account = RandomUtil.getRandomCharStr(15);
        jsBeforeUser.setAccount(account);
        //学习时长，默认为0
        jsBeforeUser.setStudyDate(0);
        //用户状态，默认为2正常，2正常，3禁言，4注销
        jsBeforeUser.setStatus(2);
        //用户签名，默认生成的签名
        jsBeforeUser.setFreestyle("Hi，欢迎来到思云课堂");
        //消费金额，默认为0
        jsBeforeUser.setConsumption(0);
        //创建时间
        jsBeforeUser.setCreateTime(new Date());
        //微信唯一标识
        jsBeforeUser.setWxUnionId(jsBeforeUser.getOpenId());
        Boolean addWxUser = loginDao.addWxUser(jsBeforeUser);
        return addWxUser;
    }

    /**
     * @Author WYH
     * @Description //TODO 查询QQ唯一标识
     * @Date 下午 1:39 2022/3/11
     * @Param wxUnionId
     * @return  Integer
     **/
    public Integer getQQ(String qqUnionId){
        return loginDao.getQQ(qqUnionId);
    }

    /**
     * @Author WYH
     * @Description //TODO 添加QQ登录用户
     * @Date 下午 1:40 2022/3/11
     * @Param jsBeforeUser
     * @return  true | false
     **/
    public Boolean addQQUser(JsBeforeUser jsBeforeUser){
        //生成账号
        String account = RandomUtil.getRandomCharStr(15);
        jsBeforeUser.setAccount(account);
        //学习时长，默认为0
        jsBeforeUser.setStudyDate(0);
        //用户状态，默认为2正常，2正常，3禁言，4注销
        jsBeforeUser.setStatus(2);
        //用户签名，默认生成的签名
        jsBeforeUser.setFreestyle("Hi，欢迎来到思云课堂");
        //消费金额，默认为0
        jsBeforeUser.setConsumption(0);
        //创建时间
        jsBeforeUser.setCreateTime(new Date());
        //QQ唯一标识
        jsBeforeUser.setQqUnionId(jsBeforeUser.getOpenId());
        Boolean addQQUser = loginDao.addQQUser(jsBeforeUser);
        return addQQUser;
    }
}
